package com.javaweb.web.dao.ds1;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;

import com.javaweb.base.po.User;
import com.javaweb.db.mybatis.api.DaoWapper;
import com.javaweb.web.eo.role.ModuleInfoResponse;
import com.javaweb.web.eo.user.RoleInfoResponse;
import com.javaweb.web.eo.user.UserListRequest;
import com.javaweb.web.eo.user.UserListResponse;

/**
 * 用户模块数据库层接口
 * @author tank2140896
 */
@Mapper
public interface UserDao extends DaoWapper<User> {
	
	/**
	 * 获取用户列表数据库层接口
	 * @param userListRequest 用户列表请求参数
	 * @return List<UserListResponse> 用户列表返回参数
	 */
	List<UserListResponse> userList(UserListRequest userListRequest);
	
	/**
	 * 获取用户列表总数数据库层接口
	 * @param userListRequest 用户列表请求参数
	 * @return Long 总条数
	 */
	Long userListCount(UserListRequest userListRequest);
	
	/**
	 * 用户删除数据库层接口
	 * @param userId 用户ID
	 */
	void userDelete(String userId);
	
	/**
	 * 根据用户ID获取用户信息数据库层接口
	 * @param list 用户ID列表
	 * @return List<User> 用户信息列表
	 */
	List<User> getUsersByUserId(List<String> list);
	
	/**
	 * 用户角色信息数据库层接口
	 * @param userId 用户ID
	 * @return List<RoleInfoResponse> 用户角色信息列表
	 */
	List<RoleInfoResponse> userRoleInfo(String userId);
	
	/**
	 * 用户角色分配数据库层接口
	 * @param map 用户角色分配请求参数
	 */
	void userRoleAssignment(Map<String,Object> map);
	
	/**
	 * 用户模块信息数据库层接口
     * @param map 用户模块信息请求参数
	 * @return List<ModuleInfoResponse> 用户模块信息列表
	 */
	List<ModuleInfoResponse> userModuleInfo(Map<String,String> map);
	
	/**
	 * 用户模块分配数据库层接口
	 * @param map 用户模块分配请求参数
	 */
	void userModuleAssignment(Map<String,Object> map);
	
}
